package cn.tedu.ximart.server.mapper;


import cn.tedu.ximart.server.pojo.entity.Category;
import cn.tedu.ximart.server.pojo.vo.CategoryDetailVO;
import cn.tedu.ximart.server.pojo.vo.CategoryListItemVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CategoryMapper {

    /**
     *插入分类数据
     * @param category 分类数据
     * @return 受影响的行，成功插入数据时返回值为1
     */
    int insert(Category category);

    /**
     * 根据id删除分类数据
     * @param id 期望删除的分类id
     * @return  受影响的行，成功删除数据时返回值为1，如果无此id对应的数据则返回0
     */
    int deleteById(Long id);

    /**
     *根据id批量删除分类数据
     * @param id 期望删除的分类id
     * @return 受影响的行，返回值代表成功删除的数据量
     */
    int deleteByIds(List<Long> id);

    /**
     * 根据id修改分类信息
     * @param category 期望修改的分类数据
     * @return 受影响的行数，若无此条数据则返回0
     */
    int updateById(Category category);

    /**
     * 查询分类数量
     * @return 返回值为查询到的分类数量
     */
    int count();


    /**
     * 根据分类名称查询数据条数
     * @param name 分类名称
     * @return 查询到的数据条数
     */
    int countByName(String name);


    /**
     * 根据分类id查询子类数据条数
     * @param id 分类id
     * @return 查询到的数据条数
     */
    int countById(Long id);

    /**
     * 根据id查询分类详情
     * @param id 期望查询的id
     * @return 返回值为查询到的数据，如果无此id对应的数据则返回null.
     */
    CategoryDetailVO getById(Long id);

    /**
     * 查询分类的列表
     * @return 返回值为分类列表
     */
    List<CategoryListItemVO> list();
}
